介紹完簡單 Bash 後接著介紹 Azure 的 Linux PowerShell,沒錯,PowerShell 不只能在 Windows 底下,現在也能在 Linux 環境中使用,喊的口號就是 PowerShell for every system
。能做到這件事歸功於近年微軟推廣的 .NET Core 跨平台
,可以在開源的 Github PowerShell.Core 官網看到全部是由 C# 編寫。
PowerShell 可以讓我們用物件化的概念來寫腳本,像是之前的 Template 我們可以這樣寫,用到 .NET Core 的 Guid Function,動態生成唯一字串,拿來生成資源。
$guid = [System.guid]::NewGuid().toString("N");
(New-AzResourceGroup -Name $guid -Location "eastasia").ResourceGroupName;
不喜歡 AZ PowerShell ? 也可以使用 Azure CLI 混搭配 ,像是使用 Azure CLI 建立資源後使用 PowerShell 的 ConvertFrom-Json
function 轉成物件
az group list | ConvertFrom-Json | select-Object name,type
批量動作 :
# PowerShell + Az PowerShell
foreach($i in 1..5){
$guid = [System.guid]::NewGuid().toString("N");
$group = New-AzResourceGroup -Name $guid -Location "eastasia" | select-Object ResourceGroupName,Location ;
Write-Host("創建 group $group");
}
# 等同於以下 PowerShell + Azure CLI
foreach($i in 1..5){
$guid = [System.guid]::NewGuid().toString("N");
$newGroup = az group create --name $guid --location "eastasia" | ConvertFrom-Json | select-Object name,location ;
Write-Host("創建 group $newGroup");
}
因為是在 Linux 環境,我們甚至可以搭配使用 Linux 的工具
,舉例使用 grep
篩選後,使用 powershell 的 foreach 批量做管理
$gs = az group list -o table | grep demo
foreach ($g in $gs) {
# 管理
Write-Host($g.Name)
}
備註 :